package com.nanhai.buddhist.college.module.study.service.teacherevaluation;

import java.util.*;
import javax.validation.*;
import com.nanhai.buddhist.college.module.study.controller.admin.teacherevaluation.vo.*;
import com.nanhai.buddhist.college.module.study.dal.dataobject.teacherevaluation.TeacherEvaluationDO;
import com.nanhai.buddhist.college.framework.common.pojo.PageResult;

/**
 * 教师评价 Service 接口
 *
 * @author 南海佛学院
 */
public interface TeacherEvaluationService {

    /**
     * 创建教师评价
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    String createTeacherEvaluation(@Valid TeacherEvaluationCreateReqVO createReqVO);

    /**
     * 更新教师评价
     *
     * @param updateReqVO 更新信息
     */
    void updateTeacherEvaluation(@Valid TeacherEvaluationUpdateReqVO updateReqVO);

    /**
     * 删除教师评价
     *
     * @param id 编号
     */
    void deleteTeacherEvaluation(String id);

    /**
     * 获得教师评价
     *
     * @param id 编号
     * @return 教师评价
     */
    TeacherEvaluationDO getTeacherEvaluation(String id);

    /**
     * 获得教师评价列表
     *
     * @param ids 编号
     * @return 教师评价列表
     */
    List<TeacherEvaluationDO> getTeacherEvaluationList(Collection<String> ids);

    /**
     * 获得教师评价分页
     *
     * @param pageReqVO 分页查询
     * @return 教师评价分页
     */
    PageResult<TeacherEvaluationDO> getTeacherEvaluationPage(TeacherEvaluationPageReqVO pageReqVO);

    /**
     * 获得教师评价列表, 用于 Excel 导出
     *
     * @param exportReqVO 查询条件
     * @return 教师评价列表
     */
     List<TeacherEvaluationDO> getTeacherEvaluationList(TeacherEvaluationExportReqVO exportReqVO);



    /**
    *  获得教师评价列表, 根据 studentId 查询
    *  学生id
    * @param  studentId  学生id 查询条件
    * @return 教师评价列表
    */
    List<TeacherEvaluationDO> getTeacherEvaluationListBystudentId(String studentId);



    /**
    *  获得教师评价列表, 根据 teacherId 查询
    *  老师id
    * @param  teacherId  老师id 查询条件
    * @return 教师评价列表
    */
    List<TeacherEvaluationDO> getTeacherEvaluationListByteacherId(String teacherId);



    /**
    *  获得教师评价列表, 根据 collegeId 查询
    *  所属学院id
    * @param  collegeId  所属学院id 查询条件
    * @return 教师评价列表
    */
    List<TeacherEvaluationDO> getTeacherEvaluationListBycollegeId(String collegeId);



    /**
    *  获得教师评价列表, 根据 departmentId 查询
    *  所属系部id
    * @param  departmentId  所属系部id 查询条件
    * @return 教师评价列表
    */
    List<TeacherEvaluationDO> getTeacherEvaluationListBydepartmentId(String departmentId);



    /**
    *  获得教师评价列表, 根据 professionsId 查询
    *  所属专业id
    * @param  professionsId  所属专业id 查询条件
    * @return 教师评价列表
    */
    List<TeacherEvaluationDO> getTeacherEvaluationListByprofessionsId(String professionsId);



    /**
    *  获得教师评价列表, 根据 classeId 查询
    *  所属班级id
    * @param  classeId  所属班级id 查询条件
    * @return 教师评价列表
    */
    List<TeacherEvaluationDO> getTeacherEvaluationListByclasseId(String classeId);



    /**
    *  获得教师评价列表, 根据 evaluationItemId 查询
    *  评价项目id
    * @param  evaluationItemId  评价项目id 查询条件
    * @return 教师评价列表
    */
    List<TeacherEvaluationDO> getTeacherEvaluationListByevaluationItemId(String evaluationItemId);



    /**
    *  获得教师评价列表, 根据 scoreItemId 查询
    *  评分等级id
    * @param  scoreItemId  评分等级id 查询条件
    * @return 教师评价列表
    */
    List<TeacherEvaluationDO> getTeacherEvaluationListByscoreItemId(String scoreItemId);



    /**
    *  获得教师评价列表, 根据 orgId 查询
    *  机构编号
    * @param  orgId  机构编号 查询条件
    * @return 教师评价列表
    */
    List<TeacherEvaluationDO> getTeacherEvaluationListByorgId(Integer orgId);


    /**
     * 获取教师评价表的所有学院
     * @return
     */
    List<TeacherEvaluationDO> selectAllCollegesList();

    /**
     * 获得教师评价表的所有班级
     * @return
     */
    List<TeacherEvaluationDO> selectAllClassesList();
}
